/*
 *	Copyright 2011 ja4cli
 *
 *	Licensed under the Apache License, Version 2.0 (the "License");
 *	you may not use this file except in compliance with the License.
 *	You may obtain a copy of the License at
 *
 *		http://www.apache.org/licenses/LICENSE-2.0
 *
 *	Unless required by applicable law or agreed to in writing, software
 *	distributed under the License is distributed on an "AS IS" BASIS,
 *	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *	See the License for the specific language governing permissions and
 *	limitations under the License.
 */
package org.skarby.ja4cli;

/**
 * Exception indicating difficulties instantiating configurations.<p/>
 * 
 * Exception thrown when a configuration could not be constructed, this could be due to quite
 * a few reasons:
 * <ul>
 * <li>Configuration class / type could not be publicly accessed (class being private, etc.)</li>
 * <li>No default constructor available.</li>
 * </ul>
 * assuming that the instantiation was done through reflection, or similar.
 * 
 * @author askarby
 */
public class ConfigurationInstantiationException extends ConfigurationParseException {
	private static final long serialVersionUID = 1L;
	private final Class<?> configurationType;

	public ConfigurationInstantiationException(Class<?> configurationType, Throwable cause) {
		super("Unable to instantiate class of type " + configurationType, cause);
		this.configurationType = configurationType;
	}
	
	/**
	 * Retrieves the type of the configuration that could not be instantiated.
	 * @return the configuration type that could not be instantiated.
	 */
	public Class<?> getConfigurationType() {
		return configurationType;
	}
}
